import java.util.*;

public class day5 {
    /**
     * HJ52 计算字符串的编辑距离
     * https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314?tpId=37&tqId=21275&ru=%2Fexam%2Foj&dayCountBigMember=365%E5%A4%A9
     */
    public static void main3(String[] args) {
        Scanner in = new Scanner(System.in);
        // 只能对一个字符串进行操作
        char[] s = in.next().toCharArray();
        char[] t = in.next().toCharArray();
        int n = s.length;
        int m = t.length;

        // dp[i][j]: 表示从s的[1,i] 区间的字符串转换为t[1,j] 区间的字符串的编辑距离
        int[][] dp = new int[n + 1][m + 1];
        // 初始化
        for(int i = 0;i <= n;i++) {
            dp[i][0] = i;
        }
        for(int j = 0;j <= m;j++) {
            dp[0][j] = j;
        }
        // 动态规划
        for(int i = 1;i <= n;i++) {
            for(int j = 1;j <= m;j++) {
                if(s[i - 1] == t[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1];
                }else {
                    dp[i][j] = Math.min(Math.min(dp[i][j - 1],dp[i - 1][j]),dp[i - 1][j - 1]) + 1;
                }
            }
        }
        System.out.println(dp[n][m]);
    }




    /**
     * 求和
     * https://www.nowcoder.com/questionTerminal/af6d52eb400b40fd9652b089216f113e
     */
    public static int n,m;
    public static int sum; // 进行计算 1-n 中的和，查看是否等于m的
    public static boolean[] visit = new boolean[11];

    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        m = in.nextInt();
        dfs(1);
    }

    public static void dfs(int x) {
        if(sum == m) {
            // 进行判断从头到尾都谁是被选择的
            for(int i = 1;i <= n;i++) {
                if(visit[i] == true) {
                    System.out.print(i + " ");
                }
            }
            // 换行
            System.out.println("");
            return;
        }
        if(sum > m || x > n) {
            return;
        }

        // 选择x
        sum += x;
        visit[x] = true;
        dfs(x + 1);
        // 进行回溯
        sum -= x;
        visit[x] = false;

        // 不选择x
        // 直接跳到下一个数据上去
        dfs(x + 1);
    }



    /**
     * MT8 奇数位丢弃
     * https://www.nowcoder.com/practice/196141ecd6eb401da3111748d30e9141?tpId=128&tqId=33775&ru=/exam/oj
     */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) {
            // 每次进行删除的都是 2的x次方 - 1 的数
            // 那么当这个位置的数字是最大值的时候，这时候就是最后剩下的数
            int n = in.nextInt();
            int ret = 1;
            while(ret - 1 <= n) {
                ret *= 2;
            }
            // 跳出这个 while循环的时候，就是最大值，进行处理，这时候的ret是一个大于n的值
            // 例如：0 1 2 3 4 5 6 7 8 9
            // 第一次：0 2 4 6 8
            // 第二次：1 5 9
            // 第三次：3
            // 最后剩余一个 7
            // 但是当while退出的时候是 16，所以进行处理
            System.out.println(ret / 2 - 1);
        }
    }
}
